import os
import logging
import time
import datetime
from config.setting import get_log_path
 
 
class LogUtil(object):
    def __init__(self):
        year,week,weekday = datetime.date.today().isocalendar()
        # 创建 logger 对象
        self.__logger = logging.getLogger("logger")
        # 设置日志输出等级总开关
        self.__logger.setLevel(logging.DEBUG)
        # 避免日志重复
        if not self.__logger.handlers:
            # 创建控制台实例
            sh = logging.StreamHandler()
            '''
            创建一个文件实例，如果文件不存在，就会自动创建；
            mode 参数设置为追加；另外为防止乱码， encoding 参数设置为 utf-8 编码格式
            '''
            # 定义日志名称 
            self.log_name = 'log-y{}-w{}.log'.format(year, week)
            # 定义日志路径及文件名称
            self.log_path_name = os.path.join(get_log_path(), self.log_name)
            fh1 = logging.FileHandler(self.log_path_name, mode='a', encoding='utf-8')
            # 设置控制台输出的日志级别
            sh.setLevel(logging.DEBUG)
            # 设置向文件输出的日志级别
            fh1.setLevel(logging.DEBUG)
            # 统一设置日志的输出格式
            formatter = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
            # 设置向控制台输出的日志格式 
            sh.setFormatter(formatter)
            # 设置向文件输出的日志格式
            fh1.setFormatter(formatter)
            # 加载控制台实例到 logger 对象中
            self.__logger.addHandler(sh)
            sh.close()
            # 加载文件实例到 logger 对象中
            self.__logger.addHandler(fh1)
            fh1.close()
 
    def getLogger(self):
        return self.__logger
 
logger = LogUtil().getLogger()

if __name__ == '__main__':
    logger = LogUtil().getLogger()
    logger.debug('BUG')
    logger.error('错误')